package com.huawei;

import java.util.HashMap;
import java.util.Scanner;

/**
 题目：
 第一行输入候选人的人数n
 第二行输入n个候选人的名字（均为大写字母的字符串）
 第三行输入投票人的人数
 第四行输入投票。
 按照输入的顺序，每行输出候选人的名字和得票数量（以" : "隔开，注：英文冒号左右两边都有一个空格！），最后一行输出不合法的票数，格式为"Invalid : "+不合法的票数。

 分析：
 1.先解析第二行和第四行
 2.对第四行用map存起来，name:count
 3.map给出第二行的所有人的数量，存到变量里。
 4.invalid数量：第三行得到的数量-第三步得到的所有数量

 **/
public class HJ094 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //候选人个数，next和nextLine混用会有风险
        Integer candidateNum = Integer.parseInt(scanner.nextLine());
        //候选人名称
        String candidateName = scanner.nextLine();
        //投票人个数
        Integer voteNum = Integer.parseInt(scanner.nextLine());
        //投票人名称
        String voteName = scanner.nextLine();

        //new出一个map
        HashMap<String, Integer> map = new HashMap<>();
        //解析候选人名称，分割成数组
        String[] candidateArr = candidateName.split(" ");


        //解析投票人名称，分割成数组，遍历数组到map中
        String[] voteArr = voteName.split(" ");
        for (String vote : voteArr) {
            map.put(vote,map.getOrDefault(vote,0)+1);
        }


        //正常票总数: rightCount
        int rightCount = 0;
        //遍历候选人数组，map.get(得到个数) ,然后得到累加rightCount，并且打印候选人票数
        for (String candidate : candidateArr) {
            //注意：用map要小心为null，老是忘记
            Integer can = map.getOrDefault(candidate,0);
            System.out.println(candidate+" : "+can);
            rightCount += can;
        }
        //非正常票计算并且打印
        int invalid = voteNum - rightCount;
        System.out.println("Invalid : "+invalid);

    }
}
